package com.itheima.stream;

import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;

/**
 * 2025/5/10 9:10
 * 演示FileReader的用户
 * <p>
 * 构造方法：
 * --1. FileReader(File file)
 * --2. FileReader(String fileName)
 * <p>
 * 成员方法：
 * --1. int read() 一次读一个“字符”,返回的是该字符在其对应的编码表中的索引（序号），如果没有更多数据了，则返回-1
 * --2. int read(char[] buf) 一次读多个“字符”，放到char[]数组中，返回的是读入的有效字符的个数，如果是-1，则表示没有更多数据了
 * <p>
 * String类的构造方法
 * --1. 将字符数组转换我字符串 String(char[] value,off,len)
 */
public class FileReaderDemo {
    public static void main(String[] args) throws IOException {

        test2();

    }

    // 一次读多个字符到char[]中
    private static void test2() throws IOException {
        //创建一个FileReader对象，用于读取纯文本文件info.txt
        FileReader fr = new FileReader("day11-io/info.txt");

        //记录读取的有效字符的个数
        int len;
        //当做缓冲区
        char[] buf = new char[1024];
        while ((len = fr.read(buf)) != -1) {
            //把buf中的字符数组转换成字符串输出
            String data = new String(buf, 0, len);
            System.out.println(data);
        }
        //关闭流
        fr.close();
    }


    private static void test1() throws IOException {
        //创建一个FileReader对象，用于读取纯文本文件info.txt
        FileReader fr = new FileReader("day11-io/info.txt");
        //记录当前读到的字符在编码表中的编号
        int read;
        while ((read = fr.read()) != -1) {
            System.out.print((char) read);
        }



       /* //一次读一个字符
        int read1 = fr.read();
        System.out.println(read1+"====="+(char)read1);


        int read2 = fr.read();
        System.out.println(read2+"====="+(char)read2);


        int read3 = fr.read();
        System.out.println(read3+"====="+(char)read3);

        int read4 = fr.read();
        System.out.println(read4+"====="+(char)read4);*/

        //关闭流
        fr.close();
    }
}
